package com.wl.wuliu.controller;

import com.wl.wuliu.config.constant.Constants;
import com.wl.wuliu.entity.LoginBody;
import com.wl.wuliu.entity.SysUser;
import com.wl.wuliu.result.AjaxResult;
import com.wl.wuliu.security.SysLoginService;
import com.wl.wuliu.utils.PatternUtils;
import com.wl.wuliu.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * 登录验证
 * @Author: gutaozhen
 * @Date: 2024/05/16
 */
@RestController
public class SysLoginController {

    @Autowired
    private SysLoginService loginService;

    /**
     * 登录方法
     * 前端需要对输入的密码使用RSA公钥加密后传过来
     * RSA公钥私钥可使用项目中的RSAUtils工具类生成
     * 密码加密在线工具：http://web.chacuo.net/netrsakeypair
     * @param loginBody 登录信息
     * @return 结果
     */
    @PostMapping("/login")
    public AjaxResult login(@RequestBody LoginBody loginBody) {
        AjaxResult ajax = AjaxResult.success();
        // 生成令牌
        String token = loginService.login(loginBody.getUsername(), loginBody.getPassword());
        ajax.put(Constants.TOKEN, token);

        return ajax;
    }

    /**
     * 密码登录
     */
    @PostMapping("/loginPwd")
    public AjaxResult loginPwd(@RequestBody LoginBody loginBody) {

        String mobile = loginBody.getMobile();
        String password = loginBody.getPassword();

        if (StringUtils.isEmpty(mobile)) {
            return AjaxResult.error("手机号码不能为空。");
        }else {
            if (!PatternUtils.validatePhoneNumber(mobile)) {
                return AjaxResult.error("手机号码不规范。");
            }
        }
        if (StringUtils.isEmpty(password)) {
            return AjaxResult.error("密码不能为空。");
        }

        return loginService.loginPwd(mobile, password);
    }
}
